package com.boatAnchorAssistant.service.controller.web;

import com.boatAnchorAssistant.pojo.param.alarmType.*;
import com.boatAnchorAssistant.pojo.vo.alarmType.*;
import com.boatAnchorAssistant.service.service.in.*;
import nirvana.core.domains.vo.PageResult;
import nirvana.core.domains.vo.ApiResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

import java.util.List;

/**
 * web/报警类型
 * 【描 述】：
 * 【环 境】：J2SE
 * 【详 细】：
 */
@RestController
@RequestMapping("/alarmType/web")
public class AlarmTypeWebController {

    private final AlarmTypeService service;

    public AlarmTypeWebController(AlarmTypeService service) {
        this.service = service;
    }


    /**
     * 创建报警类型
     *
     * @param param
     * @return
     */
    @PostMapping("/createAlarmType")
    public ApiResult createAlarmType(@RequestBody @Valid CreateAlarmTypeParam param) {
        service.createAlarmType(param);
        return ApiResult.ok();
    }


    /**
     * 修改报警类型
     *
     * @param param
     */
    @PutMapping("/editAlarmType")
    public ApiResult editAlarmType(@RequestBody @Valid EditAlarmTypeParam param) {
        service.editAlarmType(param);
        return ApiResult.ok();
    }

    /**
     * 移除报警类型
     *
     * @param id
     */
    @DeleteMapping("/removeAlarmType")
    public ApiResult removeAlarmType(@RequestParam("id") Long id) {
        service.removeAlarmType(id);
        return ApiResult.ok();
    }

    /**
     * 启动/禁用报警类型
     *
     * @param id
     */
    @GetMapping("/enabledAlarmType")
    public ApiResult enabledAlarmType(@RequestParam("id") Long id) {
        service.enabledAlarmType(id);
        return ApiResult.ok();
    }

    /**
     * 获取报警类型详情
     *
     * @param id
     * @return
     */
    @GetMapping("/getAlarmType")
    public ApiResult<GetAlarmTypeVo> getAlarmType(@RequestParam("id") Long id) {
        GetAlarmTypeVo vo = service.getAlarmType(id);
        return ApiResult.ok(vo);
    }

    /**
     * 获取报警类型列表
     *
     * @param param
     * @return
     */
    @PostMapping("/getAlarmTypeList")
    public ApiResult<PageResult<GetAlarmTypeListVo>> getAlarmTypeList(@RequestBody GetAlarmTypeListParam param) {
        PageResult<GetAlarmTypeListVo> result = service.getAlarmTypeList(param);
        return ApiResult.ok(result);
    }


    /**
     * 获取报警类型下拉列表
     *
     * @return
     */
    @PostMapping("/getAlarmTypeDownList")
    public ApiResult<List<GetAlarmTypeDownListVo>> getAlarmTypeDownList(@RequestBody(required = false) @Valid GetAlarmTypeDownListParam param) {
        List<GetAlarmTypeDownListVo> list = service.getAlarmTypeDownList(param);
        return ApiResult.ok(list);
    }


}

